//
//  SSWBWelcomeView.swift
//  shanshanlol微博
//
//  Created by 叶竞泽 on 2017/1/21.
//  Copyright © 2017年 JingZe. All rights reserved.
//

import UIKit
import SDWebImage

/// 欢迎视图
class SSWBWelcomeView: UIView {
    
    /// 头像视图
    @IBOutlet weak var iconView: UIImageView! {
        didSet {
            iconView.clipsToBounds = true
            iconView.layer.cornerRadius = iconView.bounds.width * 0.5
        }
    }
    
    /// 提示lebel
    @IBOutlet weak var tipLabel: UILabel!
    
    /// iconView的底部约束
    @IBOutlet weak var iconViewBottomConstraint: NSLayoutConstraint!
    
    class func welcomeView() -> SSWBWelcomeView? {
        
        let nib = UINib.init(nibName: "SSWBWelcomeView", bundle: nil)
        
        let v = nib.instantiate(withOwner: nil, options: nil)[0] as? SSWBWelcomeView
        
        // 从xib加载的视图,默认是600*600,需要手动指定大小
        v?.frame = UIScreen.main.bounds
        
        return v
    }
    
    // initWithCoder只是将xib的二进制文件视图数据加载完成,还没有和代码连线建立关系
    // 开发的时候不要在这个方法里处理UI
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    /// 从xib加载完成调用
    override func awakeFromNib() {
        
        // 1. 判断是否有头像地址
        guard let urlString = SSWBNetworkManager.shared.userAccount.avatar_large, let url = URL(string: urlString) else {
            return
        }
        // 2.设置头像 - 如果没有加载完成头像,先显示占位头像
        // 如果不设置占位头像,xib设置的头像会被清空
        iconView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big"))
    }
    
    /// 自动布局系统更新完约束后,自动调用此方法 - 通常对子视图进行布局修改
    override func layoutSubviews() {
        super.layoutSubviews()
    }
    
    
    /// 视图被添加到window上,视图已经显示了
    override func didMoveToWindow() {
        super.didMoveToWindow()
        
        // 视图使用自动布局来设置,只是设置了约束
        // 当视图被添加到窗口上时,根据父视图的大小,更新控件位置
        // layoutIfNeeded会直接按照当前约束更新控件位置,layoutIfNeeded执行后,就有了frame
        self.layoutIfNeeded()
        
        // 设置动画内容
        self.iconViewBottomConstraint.constant = self.bounds.size.height - 200
        
        // 如果控件的frame还没有计算好,用动画的话会更新所有约束
        UIView.animate(withDuration: 2.5, delay: 0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0, options: [], animations: {
            
            // 更新约束
            self.layoutIfNeeded()
            
        }) { (_) in
            
            UIView.animate(withDuration: 2, animations: {
                self.tipLabel.alpha = 1
            }, completion: { (_) in
                self.removeFromSuperview()
            })
        }
    }
    
    
    
}
